package romantointeger

/*
罗马数字转换为整数
1：我们先将每个符号所代表的数字进行存储。
2：从后向前遍历字符串，如果遇到前面的数字比后面的数字小，就要用已经计算出的总和减去前面的数字。
3：如果遇到前面的数字比后面的数字大，就要计算出前面计算的总和和此数字的和，并且要及时更新前面的数字。
*/

var roman = map[byte]int{
	'I': 1,
	'V': 5,
	'X': 10,
	'L': 50,
	'C': 100,
	'D': 500,
	'M': 1000,
}

func romanToInt(s string) int {
	if s == "" {
		return 0
	}
	num, lastint, total := 0, 0, 0
	for i := len(s) - 1; i >= 0; i-- {
		num = roman[s[i]]
		if num < lastint {
			total = total - num
		} else {
			total = total + num
		}
		lastint = num
	}
	return total
}
